require(['./config'],() =>{
	require(['template','imagezoom','jquery','header','footer','service'],(template) =>{
		class shopCart{
			constructor() {
			    this.getShop().then(()=>{
					this.addToCart ()
					this.addShopping ()
					this.fangDajing()
				})
			}
		getShop(){
			const id = location.search.slice(4)
			return new Promise ((resolve , reject) =>{
				$.get('http://www.xiongmaoyouxuan.com/api/detail',{id},resp =>{
					if(resp.code === 200){
						console.log(resp)
						const{
							id,
							title,
							price,
							photo,
							saleNum,
							tbOriginPrice,
							commission,
							itemId
						}=resp.data.detail
						this.detail = {
							id,
							title,
							price,
							photo,
							saleNum,
							tbOriginPrice,
							commission,
							itemId
						}
						$('#shopCart').html(
							template('shopTmplate',{ ...this.detail})
						)
						resolve()
					}
				})
			})
		}
		  addToCart () {
		        // 加入购物车
		        $('.cart').on('click', () =>{
		          // 先取，取出来之后判断购物车里是否已经有数据
		          //   如果没有，那就存入当前数据，但是也存一个数组，为下一次做准备
		          //   如果有了，那就把取出来的数据push当前这一条再重新存进去
		          let cart = localStorage.getItem('cart')
		          if (cart) {
		            // 购物车里已经有数据了
		            cart = JSON.parse(cart)
		            // 判断购物车里已存在的数据中是否包含当前数据
		            // 如果已存在就把数量加1（或者加数量输入框的值）
		            // 如果不存在才push
		            const isExist = cart.some(shop => {
		              return shop.id === this.detail.id
		            })
		            if (isExist) {
		              // 商品已存在
		              // 用map修改数组，满足条件就count加完再return，不满的话直接return shop本身
		              cart = cart.map(shop => {
		                if (shop.id === this.detail.id) {
		                  shop.count++
		                }
		                return shop
		              })
		            } else {
		              // 当前商品还没有被加过购物车
		              // 把当前商品push到数组里，也要写上默认数量为1，默认选中
		              cart.push({ ...this.detail, count: 1, check: true })
		            }
		            // 不管if还是else都要存cart，那就放在最后即可
		            localStorage.setItem('cart', JSON.stringify(cart))
		          } else {
		            // 购物车为空
		            // 把this.detail展开，再加上count字段和check，把这个对象放进数组，存入localStorage
		            localStorage.setItem('cart', JSON.stringify([ { ...this.detail, count: 1, check: true } ]))
		          }
		          // 调用header的方法计算总数量
		          // header.calcCartCount()
		        })
		      }
			addShopping(){
				 $('.bot').on('click', () =>{
					 $('.cart').trigger('click')
				 })
			}
			fangDajing(){
				$(".jqzoom").imagezoom();
				$("#thumblist li a").click(function(){
					$(this).parents("li").addClass("tb-selected").siblings().removeClass("tb-selected");
					$(".jqzoom").attr('src',$(this).find("img").attr("mid"));
					$(".jqzoom").attr('rel',$(this).find("img").attr("big"));
				
				})
			}
		}
		new shopCart()
	})
})
